package com.pithypan.service;


import com.pithypan.common.utils.StringTools;
import com.pithypan.dto.SessionWebUserDto;
import com.pithypan.entity.UserInfo;
import com.pithypan.vo.PaginationResultVo;
import com.pithypan.vo.UserInfoQuery;

/**
 * <p>
 * 用户信息 服务类
 * </p>
 *
 * @author author
 * @since 2023-08-17
 */
public interface UserInfoService {


    /**
     * 用户分页查询
     * @param query
     * @return
     */
    public PaginationResultVo findListByPage(UserInfoQuery query);


    /**
     * 用户注册
     * @param userInfo    注册信息（注册邮箱、用户名、用户密码）
     * @param emailCode   用户提交的邮箱验证码
     * @return
     */
    public void register(UserInfo userInfo, String emailCode);


    /**
     * 用户登录
     * @param email
     * @param password
     * @return
     */
    public SessionWebUserDto login(String email, String password);


    /**
     * 根据邮箱修改密码（用户未登陆，需要邮箱验证）
     * @param email        邮箱
     * @param password     新密码
     * @param emailCode    邮箱验证码
     */
    public void resetPwd(String email, String password, String emailCode);


    /**
     * 根据userId修改Qq头像
     * @param updateInfo
     * @param userId
     */
    public void updateUserAvatarByUserId(UserInfo updateInfo, String userId);


    /**
     * 根据userId修改密码
     * @param updateInfo
     * @param userId
     */
    public void updatePasswordByUserId(UserInfo updateInfo, String userId);


    /**
     * 查询用户所有已上传文件大小总和
     * @param userId
     * @return
     */
    public Long getUserSpace(String userId);


    /**
     * 根据用户id更改状态
     * @param userId
     * @param status
     */
    public void updateUserStatus(String userId, Integer status);


    /**
     * 修改用户可使用空间
     * @param userId
     * @param changeSpace
     */
    void changeUserSpace(String userId, Long changeSpace);


    /**
     * 根据id获得用户
     * @param userId
     * @return
     */
    public UserInfo getUserInfoByUserId(String userId);
}
